package com.likeycy.my;

import com.likeycy.my.list.List;
import com.likeycy.my.list.MyLinkedList;

/**
 * @ClassName: MyDeque
 * @Description: 自定义一个双端队列
 * @Author: sodagreen
 * @Date: 2021/3/4 20:06
 * @Version: 1.0
 */
public class MyDeque<E> {

    private List<E> list = new MyLinkedList<>();

    /** 元素数量 */
    public int size() {
        return list.size();
    }
    /** 队列是否为空 */
    public boolean isEmpty() {
        return list.isEmpty();
    }

    /** 从队尾入队 */
    public void enQueueRear(E element) {
        list.add(element);
    }
    /** 从队尾出队 */
    public E deQueueRear() {
        return list.remove(list.size() -1);
    }

    /** 从队头入队 */
    public void enQueueFront(E element) {
        list.add(0, element);
    }

    /** 从队头出队 */
    public E deQueueFront() {
        return list.remove(0);
    }

    /** 获取队列的头元素 */
    public E front() {
        return list.get(0);
    }
    /** 获取队尾的尾元素 */
    public E rear() {
        return list.get(list.size() -1);
    }
    /** 清空队列 */
    public void clear() {
        list.clear();
    }
}
